﻿using CREAPA.Dominio;
using CREAPA.RepositorioADO;
using CREAPA.UL.Web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CREAPA.UL.Web.HtmlHelpers;

namespace CREAPA.UL.Web.Controllers
{
    public class FuncionarioPermissaoController : Controller
    {
        FuncionarioPermissaoRepositorioADO funcionarioPermissaoADO = new FuncionarioPermissaoRepositorioADO();
        private siscreaEntitiesBD db = new siscreaEntitiesBD();

        [Authorize]
        public ActionResult Index(string login)
        {
            string usu = User.Identity.Name;
            var permissao = new SelectList(db.FuncionarioPermissoes.Where(p => p.Login == usu && (p.Permissao == 12 || p.Permissao == 11)));

            if (permissao.Count() > 0)
            {
                if (TempData["Result"] != null)
                    ModelState.AddModelError("", "Você não selecionou a Permissão");
                var listaFuncionarioPermissao = funcionarioPermissaoADO.ListarFuncionarioPermissao(login);
                ViewBag.listaFuncionarioPermissao = listaFuncionarioPermissao;
                var listaFuncionarioPermissaoDisponivel = funcionarioPermissaoADO.ListarFuncionarioPermissaoDisponivel(login);
                ViewBag.listaFuncionarioPermissaoDisponivel = listaFuncionarioPermissaoDisponivel;
                ViewBag.Login = login;
                TempData["Login"] = login;
                return View();
            }
            else
            {
                TempData["notice"] = "Você não tem permissão para acessar essa página. É necessária a permissão: 0012";
                return RedirectToAction("../Os/Erro");
            }
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Adicionar()
        {
            var ListaPermissaoAdd = Request.Form["Selecionar"];
            var login = TempData["Login"];
            TempData.Keep("Login");
            string perm = "";
            int pos = 0;
            if (ListaPermissaoAdd == null)
            {
                TempData["Result"] = "1";
            }
            else
            {
                do
                {
                    pos = ListaPermissaoAdd.IndexOf(",");
                    if (pos != -1)
                    {
                        perm = ListaPermissaoAdd.Substring(0, pos);
                        ListaPermissaoAdd = ListaPermissaoAdd.Substring(pos + 1);

                        funcionarioPermissaoADO.Inserir(perm, login.ToString());
                    }
                    else//último elemento da lista
                    {
                        funcionarioPermissaoADO.Inserir(ListaPermissaoAdd, login.ToString());
                    }
                }
                while (pos != -1);
            }
            return RedirectToAction("Index", new { Login = login });
        }

        [Authorize]
        public ActionResult Excluir()
        {
            var login = TempData["Login"];
            TempData.Keep("Login");
            ViewBag.Login = login;
            var ListaPermissaoExcluir = Request.Form["Excluir"];
            if (ListaPermissaoExcluir == null)
            {
                TempData["Result"] = "1";
                return RedirectToAction("Index", new { Login = login });
            }
            else
            {
                TempData["Excluir"] = ListaPermissaoExcluir;
                var listaExcluir = funcionarioPermissaoADO.ListarFuncionarioPermissaoExcluir(ListaPermissaoExcluir);
                ViewBag.ListaPermissaoExcluir = listaExcluir;
                return View();
            }
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult ExcluirConfirmado()
        {
            funcionarioPermissaoADO.Excluir(TempData["Excluir"].ToString(), TempData["Login"].ToString());
            TempData.Keep("Login");
            return RedirectToAction("Index", new { Login = TempData["Login"].ToString() });
        }
    }
}
